<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>

    <script>
        var o = {
            extend: function () {
                for (var i = 0; i < arguments.length; i++) {
                    // 分别取出 传入的对象， 将传入的对象属性遍历给当前对象（继承给当前对象）
                    for (var k in arguments[i]) {
                        // i 表示传入的是 第几个对象， k 是这个对象的属性
                        this[k] = arguments[i][k];
                    }

                }
            }
        }

        // 构造函数
        function Person(name) {
            this.name = name;
        }
        Person.prototype = o;


        // 构造学生对象
        function Student(num) {
            this.num = num;
        }
        //将 Person 的属性和方法 继承给 Student
        Student.prototype = new Person('刘德华');


        var stu = new Student('110');
        console.log(stu.name);

        
        // 组长 构造方法
        function Zuzhang() {
            this.sleep = function () {
                console.log('睡觉');
            },
            // 当原型链 超过一定层级 可以使用 这种方式 优化
            this.extend = Person.prototype.extend;
        }

        Zuzhang.prototype = stu;

        var zz = new Zuzhang();

        zz.extend({age: 19});

        console.log(zz);
        


    </script>


</body>

</html>